Expand description
Wry is a Cross-platform WebView rendering library.
To build a Window with WebView embedded, we could use application
module to create
EventLoop
and the window. It’s a module that re-exports APIs from tao. Then
use webview
module to create the WebView
from the Window
. Here’s a minimum example
showing how to create a hello world window and load the url to Tauri website.
fn main() -> wry::Result<()> {
use wry::{
application::{
event::{Event, StartCause, WindowEvent},
event_loop::{ControlFlow, EventLoop},
window::WindowBuilder,
},
webview::WebViewBuilder,
};
let event_loop = EventLoop::new();
let window = WindowBuilder::new()
.with_title("Hello World")
.build(&event_loop)?;
let _webview = WebViewBuilder::new(window)?
.with_url("https://tauri.studio")?
.build()?;
event_loop.run(move |event, _, control_flow| {
*control_flow = ControlFlow::Wait;
match event {
Event::NewEvents(StartCause::Init) => println!("Wry has started!"),
Event::WindowEvent {
event: WindowEvent::CloseRequested,
..
} => *control_flow = ControlFlow::Exit,
_ => (),
}
});
}
Feature flags
Wry uses a set of feature flags to toggle several advanced features. file-drop
, protocol
,
are enabled by default.
tao
: Default windowing crate used by wry. It is re-exported asapplication
module.winit
: Replace tao with [winit] crate. It only supports Windows and macOS.file-drop
: Enableswith_file_drop_handler
to control the behaviour when there are files interacting with the window. Enabled by default.protocol
: Enableswith_custom_protocol
to define custom URL scheme for handling tasks like loading assets. Enabled by default. This feature requires eitherlibayatana-appindicator
orlibappindicator
package installed. You can still create those types if you disable it. They just don’t create the actual objects.devtools
: Enables devtools on release builds. Devtools are always enabled in debug builds. On macOS, enabling devtools, requires calling private apis so you should not enable this flag in release build if your app needs to publish to App Store.transparent
: Transparent background on macOS requires calling private functions. Avoid this in release build if your app needs to publish to App Store.fullscreen
: Fullscreen video and other media on macOS requires calling private functions. Avoid this in release build if your app needs to publish to App Store.dox
: Enables this inpackage.metadata.docs.rs
section to skip linking some Linux libraries and prevent from building documentation on doc.rs fails.linux-headers
: Enables headers support of custom protocol request on Linux. Requires webkit2gtk v2.36 or above.
Re-exports
pub use http;
Modules
- Re-exported Tao APIs
WebView
struct and associated types.
Enums
- Errors returned by wry.
- Represents any valid JSON value.
Type Aliases
- Convenient type alias of Result type for wry.